package com.wl2o2o.lanqiao.xzfourteen;

import java.math.BigDecimal;

/** 
* @author : WLei224
* @date ：2023年3月3日 下午1:02:40 
* 高精度大整数计算，例如Π
* 涉及到派的计算公式
* 
*/
public class pi {

	public static void main(String[] args) {
		pi(100);
	}
	
	public static void pi(int n) {
		BigDecimal head = BigDecimal.ZERO;
		BigDecimal tail = BigDecimal.ZERO;
		BigDecimal ans = BigDecimal.ZERO;
		int jd = 2000;
		for(int i = 0; i < n; i++) {
			//前一部分:1/分母
			BigDecimal de5 = new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
					.multiply(new BigDecimal("5").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
						//后一部分
			BigDecimal de239 = new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
					.multiply(new BigDecimal("239").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
			//符号
			BigDecimal fh = new BigDecimal((i%2 == 0? 1:-1)+"");
			//公式的前后部分循环相加，同时涉及到符号
			head = head.add(de5.multiply(fh));
			tail = tail.add(de239.multiply(fh));
			
			
			
		}
		ans = new BigDecimal("16").multiply(head).subtract(new BigDecimal("4").multiply(tail));
		System.out.println(ans);
		
	}

}
